package com.engineering.elink.service;

import java.util.Map;

import com.engineering.elink.domain.Video;
import com.zxy.core.co.BaseCo;

/**
 * 
 * 视频相关业务操作接口
 * 
 * ClassName: VideoService <br/> 
 * Function: ADD FUNCTION. <br/> 
 * Reason: ADD REASON(可选). <br/> 
 * date: 2016年10月20日 下午11:28:39 <br/> 
 * 
 * @author zengxinyan 
 * @version  
 * @since JDK 1.8
 */
public interface VideoService {

	/**
	 * 获取最近浏览视频
	 * 
	 * getBrowseVideo:(这里用一句话描述这个方法的作用). <br/> 
	 * (这里描述这个方法适用条件 – 可选).<br/> 
	 * (这里描述这个方法的执行流程 – 可选).<br/> 
	 * (这里描述这个方法的使用方法 – 可选).<br/> 
	 * (这里描述这个方法的注意事项 – 可选).<br/> 
	 * 
	 * @author zengxinyan 
	 * @param co
	 * @return 
	 * @since JDK 1.8
	 */
	Map<String, Object> getBrowseVideo(BaseCo co);
	
	/**
	 * 
	 * 立即学习，根据课程ID，默认查询课程下第一章第一节，第一个视频
	 * 
	 * selectDefaultOneVideo:(这里用一句话描述这个方法的作用). <br/> 
	 * (这里描述这个方法适用条件 – 可选).<br/> 
	 * (这里描述这个方法的执行流程 – 可选).<br/> 
	 * (这里描述这个方法的使用方法 – 可选).<br/> 
	 * (这里描述这个方法的注意事项 – 可选).<br/> 
	 * 
	 * @author zengxinyan 
	 * @param courseId
	 * @return 
	 * @since JDK 1.8
	 */
	Map<String,Object> selectDefaultOneVideo(Integer courseId,Integer freeStatus,String userId);

	/**
	 * 
	 * 单个视频
	 * 
	 * get:(这里用一句话描述这个方法的作用). <br/> 
	 * (这里描述这个方法适用条件 – 可选).<br/> 
	 * (这里描述这个方法的执行流程 – 可选).<br/> 
	 * (这里描述这个方法的使用方法 – 可选).<br/> 
	 * (这里描述这个方法的注意事项 – 可选).<br/> 
	 * 
	 * @author zengxinyan 
	 * @param videoId
	 * @param userId
	 * @return 
	 * @since JDK 1.8
	 */
	Map<String,Object> get(Integer videoId,Map<String,Object> userInfo);
	
	/**
	 * 跳到下一个视频
	 * 
	 * selectNextVideo:(这里用一句话描述这个方法的作用). <br/> 
	 * (这里描述这个方法适用条件 – 可选).<br/> 
	 * (这里描述这个方法的执行流程 – 可选).<br/> 
	 * (这里描述这个方法的使用方法 – 可选).<br/> 
	 * (这里描述这个方法的注意事项 – 可选).<br/> 
	 * 
	 * @author zengxinyan 
	 * @param courseId
	 * @param freeStatus
	 * @param videoId
	 * @return 
	 * @since JDK 1.8
	 */
	Video selectNextVideo(Integer courseId,Integer freeStatus,Integer videoId,String userId);
	
	/**
	 * 
	 * 相关视频
	 * 
	 * getSameVideo:(这里用一句话描述这个方法的作用). <br/> 
	 * (这里描述这个方法适用条件 – 可选).<br/> 
	 * (这里描述这个方法的执行流程 – 可选).<br/> 
	 * (这里描述这个方法的使用方法 – 可选).<br/> 
	 * (这里描述这个方法的注意事项 – 可选).<br/> 
	 * 
	 * @author zengxinyan 
	 * @param co
	 * @return 
	 * @since JDK 1.8
	 */
	Map<String, Object> getSameVideo(BaseCo co,Integer videoId);
	
	Map<String,Object> syncVideo(String cloudAddress,String seed,String authToken,String videoJsonStr,String jsonStr);
	
	Map<String,Object> deleteVideo(String videoIds);
	
	Map<String,Object> updateVideo(String videoJsonStr);
	
	Map<String,Object> getList(String videoName,Integer status,BaseCo co,String userId);
	
}
